package com.nineclock.system.controller;

import com.nineclock.api.system.SysCompanyContactConfigControllerApi;
import com.nineclock.common.entity.Result;
import com.nineclock.system.dto.SysCompanyContactConfigDTO;
import com.nineclock.system.service.SysCompanyContactConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Author: 小康
 * @CreateTime: 2021-06-08 20:25
 * @Description: 业务控制层，负责接收数据和请求，并且调用Service层实现这个业务逻辑。
 */
@RestController  //可代替 @Controller + @ResponseBody（ 会自动解析成json发送。）
@RequestMapping("/companyContact")  //定义请求路径
public class SysCompanyContactConfigController implements SysCompanyContactConfigControllerApi {

    @Autowired  //对象注入
    private SysCompanyContactConfigService companyContactConfigService;

    /**
     * 添加企业联系人字段配置
     * @param configDTO
     * @return
     */
    @PostMapping("/config")  //请求方式  路径
    //返回值类型  Result（前后交互） @RequestBody将前端JSON格式转化java对象格式
    public Result addCompanyContactConfig(@RequestBody SysCompanyContactConfigDTO configDTO){
        //service对象调用方法，添加
        companyContactConfigService.addCompanyContactConfig(configDTO);
        return Result.success();
    }

    /**
     * 查询并初始化企业联系人字段配置
     * @return
     */
    @GetMapping("/config")
    @PreAuthorize("hasRole('ADMIN')")
    public Result<List<SysCompanyContactConfigDTO>> queryCompanyContactConfig(){
        List<SysCompanyContactConfigDTO> configList = companyContactConfigService.queryCompnayContactConfig();
        return Result.success(configList);
    }


    //修改通讯录字段状态
     @Override
    @PutMapping("/config/{id}/{status}")
     @PreAuthorize("hasAuthority('config_update')")
    public Result updateCompanyContactConfigStatus(@PathVariable("id") Long id, @PathVariable("status") Short status){
        companyContactConfigService.updateStatus(id , status);
        return Result.success();
    }
    //删除通讯录字段
    @Override
    @DeleteMapping("/config/{id}")
    public Result deleteCompanyContactConfigStatus(@PathVariable("id") Long id){
       companyContactConfigService.deleteStatus(id);
        return Result.success();
    }

}
